package cn.edu.lcu.cs.javaprogramming.oop;

/**
 * 一个演示类，用于展示 Java 中实例之间如何合法访问私有成员和方法。
 */
public class MyClass {
    /**
     * 存储类的一个私有整数值。
     */
    private int value;

    /**
     * 将另一个 MyClass 实例的私有值复制到当前实例。
     *
     * @param other 要从中复制值的另一个 MyClass 实例
     */
    public void copyValueFrom(MyClass other) {
        this.value = other.value; // 合法：直接访问其他实例的私有成员
    }

    /**
     * 调用另一个 MyClass 实例的私有方法。
     *
     * @param other 要调用其私有方法的另一个 MyClass 实例
     */
    public void callPrivateMethod(MyClass other) {
        other.privateMethod(); // 合法：直接调用其他实例的私有方法
    }

        /**
     * 私有方法，用于演示 Java 中私有方法可以被同一个类的不同实例访问。
     */
    private void privateMethod() {
        System.out.println("私有方法被调用");
    }


    /**
     * 程序的主入口，用于测试 MyClass 的功能。
     * 创建两个 MyClass 实例，并演示值复制和私有方法调用。
     *
     * @param args 命令行参数（未使用）
     */
    public static void main(String[] args) {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();

        obj1.value = 10;
        obj2.value = 20;
        System.out.println("obj1.value = " + obj1.value);
        System.out.println("obj2.value = " + obj2.value);
        obj1.copyValueFrom(obj2);
        System.out.println("obj1.value = " + obj1.value);

        obj1.copyValueFrom(obj2);
        obj1.callPrivateMethod(obj2);
    }
}